package com.monkey.core.plugin.dto;

import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Project  : monkey
 * Author   : Wu Tian Qiang
 * Date     : 2016/9/2
 */
public interface MonkeyDto {

    /**
     * 以Integer类型返回属性
     *
     * @param pKey
     * @return Integer 键值
     */
    Integer getInteger(String pKey);

    /**
     * 以Long类型返回属性
     *
     * @param pKey
     * @return Long 键值
     */
    Long getLong(String pKey);

    /**
     * 以String类型返回属性
     *
     * @param pKey
     * @return String 键值
     */
    String getString(String pKey);

    /**
     * 以BigDecimal类型返回属性
     *
     * @param pKey
     * @return BigDecimal 键值
     */
    BigDecimal getBigDecimal(String pKey);

    /**
     * 以Date类型返回属性
     *
     * @param pKey
     * @return Date 键值(yyyy-MM-dd)
     */
    Date getDate(String pKey);

    /**
     * 以Timestamp类型返回属性
     *
     * @param pKey
     * @return Timestamp 键值(yyyy-MM-dd HH:mm:ss)
     */
    Timestamp getTimestamp(String pKey);

    /**
     * 以Boolean类型返回属性
     *
     * @param pKey
     * @return Boolean 键值
     */
    Boolean getBoolean(String pKey);

    /**
     * 以List类型返回属性
     *
     * @param pKey
     * @return List 键值
     */
    List<Object> getList(String pKey);

    /**
     * 控制台打印DTO对象,只打印简单对象。
     */
    void println();


    boolean containsValue(Object value);

    Object get(Object key);

    Object put(String key, Object value);

    Object remove(Object key);

    void putAll(Map<? extends String, ? extends Object> m);

    void putAll(MonkeyDto monkeyDto);

    void clear();

    Set<String> keySet();

    Collection<Object> values();

    Map<String, Object> getParams();
}
